/*******************************************************************************
 * Copyright (c) 2006 CEA List.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     CEA List - initial API and implementation
 *******************************************************************************/
package com.cea.papyrus.core.helper;

import java.util.List;

import org.eclipse.emf.common.util.Enumerator;

/**
 * Descriptor for helpers. It helps referencing an helper in a registry.
 */
public interface IHelperDescriptor {
	
	/**
	 * Returns the type of working element.
	 * 
	 * @return the type of working element
	 */
	public Class getElementClass();
	
	/**
	 * Sets the type of the element to manipulate.
	 * 
	 * @param elementClass the elementClass to set
	 */
	public void setElementClass(Class elementClass);
	
	/**
	 * Returns the Enumerator, in case of a element with an enumerator, like PseudoStateKind.
	 * 
	 * @return the Enumerator that specifies the element to manipulate
	 */
	public Enumerator getEnumerator();
	
	/**
	 * Sets the enumerator.
	 * 
	 * @param enumerator the enumerator to set
	 */
	public void setEnumerator(Enumerator enumerator);
	
	/**
	 * Returns extended data about the element to manipulate.
	 * 
	 * @return extended data about the element to manipulate
	 */
	public Object getExtendedData(); 
	
	/**
	 * Sets the extendedData.
	 * 
	 * @param extendedData the extendedData to set
	 */
	public void setExtendedData(Object extendedData);
	
	/**
	 * Returns the list of name of stereotypes to be applied to the manipulated element, in case of element creation.
	 * 
	 * @return the list of name of stereotypes to be applied to the manipulated element, in case of element creation
	 */
	public List<String> getStereotypes();


	/**
	 * Sets the list of stereotypes name, stereotypes that are added in case of element creation.
	 * 
	 * @param stereotypes the stereotypes to set
	 */
	public void setStereotypes(List<String> stereotypes);
}
